﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DXApplicationTangche.UC.项目成果管理.在制品管理.service;
using DXApplicationTangche.UC.项目成果管理.service;
using DXApplicationTangche.UC.生产计划.生产批生产.service;
using DXApplicationTangche.UC.下单MTO.Service;

namespace DXApplicationTangche.UC.项目成果管理
{
    public partial class Form项目成果提交 : DevExpress.XtraEditors.XtraForm
    {
        private DTO项目成果提交 DTO项目成果提交 = new DTO项目成果提交();
        private Boolean 是否是编排生产计划 = false;
        public Form项目成果提交(DTO项目成果提交 DTO项目成果提交)
        {
            InitializeComponent();
            this.DTO项目成果提交 = DTO项目成果提交;
        }
        public Form项目成果提交(DTO项目成果提交 DTO项目成果提交,Boolean flag)
        {
            InitializeComponent();
            this.是否是编排生产计划 = flag;
            this.DTO项目成果提交 = DTO项目成果提交;
        }

        private void textBox扫描_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyValue == 13)
            {
                if (String.IsNullOrEmpty(this.textBox扫描.Text))
                {
                    MessageBox.Show("无扫描信息");
                    return;
                }
                //判断扫描的工牌是否正确
                String mnemonic = 项目成果Service.get判断扫描员工码是否正确(this.textBox扫描.Text.Trim());
                if (String.IsNullOrWhiteSpace(mnemonic))
                {
                    this.textBox扫描.Clear();
                    MessageBox.Show("扫描员工码错误，请重新扫描");
                    return;
                }
                this.DTO项目成果提交.mnemonic = mnemonic;
                try
                {
                    if (this.是否是编排生产计划)
                    {
                        //是编排生产计划：改变wait到plan并且记录审版人
                        项目成果Service.post编排生产批提交(this.DTO项目成果提交);
                    }
                    else
                    {
                        try
                        {
                            //  工序顺序提醒，不影响继续干活
                            UC.下单MTO.Service.PlainMessageResult plainMessageResult =
                                生产批生产Service.validateProjectInstance(
                                    this.DTO项目成果提交.batchNo,
                                    this.DTO项目成果提交.code
                                    );
                            if (!ConstPlainMessageResult.OK.Equals(plainMessageResult.errorCode))
                            {
                                MessageBox.Show(plainMessageResult.errorMessage);
                            }
                        }
                        catch { }
                        //记录执行人
                        项目成果Service.post项目成果提交(this.DTO项目成果提交);
                    }
                    MessageBox.Show("操作完成");
                    this.Close();
                }
                catch (Exception exception)
                {
                    MessageBox.Show(exception.Message);
                }

            }
        }
    }
}